Process Management என்றால் என்ன?
Node.js இல் Process Management என்பது உங்கள் பயன்பாட்டின் வாழ்க்கைச் சுழற்சியைக் கட்டுப்படுத்துவது பற்றியது.
இது உள்ளடக்குகிறது:
பயன்பாடுகளைத் தொடங்குதல் மற்றும் நிறுத்துதல்
உங்கள் Node.js பயன்பாடுகளை கட்டுப்படுத்துதல்
கிராஷ்களுக்குப் பிறகு மீண்டும் தொடங்குதல்
தானாகவே மீண்டும் தொடங்கும் பொறிமுறைகள்
செயல்திறனைக் கண்காணித்தல்
நினைவகம் மற்றும் CPU பயன்பாட்டைக் கண்காணித்தல்
கணினி சிக்னல்களைக் கையாளுதல்
SIGINT, SIGTERM போன்ற சிக்னல்களைக் கையாளுதல்
சூழல் மாறிகளை நிர்வகித்தல்
வெவ்வேறு சூழல்களுக்கான கட்டமைப்பு
Process தகவலை அணுகுதல்
process பொருள் தற்போதைய Node.js process பற்றிய விவரங்களை வழங்குகிறது மற்றும் கட்டுப்பாட்டை வழங்குகிறது.
இங்கே சில பயனுள்ள பண்புகள் உள்ளன:
// Process identification
console.log('Process ID (PID):', process.pid);
// Platform information
console.log('Platform:', process.platform);
console.log('Node.js version:', process.version);
// Memory usage (in bytes)
console.log('Memory usage:', process.memoryUsage());
// Command line arguments
console.log('Arguments:', process.argv);
Process ஐ வெளியேற்றுதல்
இந்த முறைகளைப் பயன்படுத்தி உங்கள் Node.js நிரல் எப்போது நிற்கும் என்பதை நீங்கள் கட்டுப்படுத்தலாம்:
1. இயல்பான வெளியேற்றம்
// Exit with success (status code 0)
process.exit();
// Or explicitly
process.exit(0);
2. பிழையுடன் வெளியேற்றம்
// Exit with error (status code 1)
process.exit(1);
3. வெளியேற்றத்திற்கு முன் நிகழ்வு
// Run cleanup before exiting
process.on('beforeExit', (code) => {
console.log('About to exit with code:', code);
});
Process நிகழ்வுகளைக் கையாளுதல்
Node.js processes கணினி சிக்னல்கள் மற்றும் நிகழ்வுகளுக்கு பதிலளிக்க முடியும்.
இங்கே மிகவும் பொதுவானவை சில உள்ளன:
1. Ctrl+C (SIGINT) ஐக் கையாளுதல்
// Handle Ctrl+C
process.on('SIGINT', () => {
console.log('\nGot SIGINT. Press Control-D to exit.');
// Perform cleanup if needed
process.exit(0);
2. Process முடிவைக் கையாளுதல் (SIGTERM)
process.on('SIGTERM', () => {
console.log('Received SIGTERM. Cleaning up...');
// Perform cleanup if needed
process.exit(0);
});
3. சர்வர் மூடுதலுடன் SIGTERM ஐக் கையாளுதல்
process.on('SIGTERM', () => {
console.log('Received SIGTERM. Cleaning up...');
server.close(() => {
console.log('Server closed');
process.exit(0);
});
});
4. பிடிபடாத விதிவிலக்குகள்
process.on('uncaughtException', (err) => {
console.error('Uncaught Exception:', err);
// Perform cleanup if needed
process.exit(1); // Exit with error
});
Process மேலாளர்கள்
Production சூழல்களுக்கு, உங்கள் பயன்பாட்டை சீராக இயக்க வைக்க ஒரு process மேலாளரைப் பயன்படுத்தவும்.
PM2 மிகவும் பிரபலமான தேர்வாகும்:
1. PM2 ஐ உலகளாவிய முறையில் நிறுவவும்
npm install -g pm2
2. அடிப்படை PM2 கட்டளைகள்
# Start an application
pm2 start app.js
# List all running applications
pm2 list
# Monitor resources
pm2 monit
# View application logs
pm2 logs
# Stop an application
pm2 stop app_name
# Restart an application
pm2 restart app_name
# Delete an application from PM2
pm2 delete app_name
3. PM2 கட்டமைப்பு
மேம்பட்ட கட்டமைப்பிற்கான ecosystem கோப்பை உருவாக்கவும்:
// ecosystem.config.js
module.exports = {
apps: [{
name: 'my-app',
script: 'app.js',
instances: 'max',
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development',
},
env_production: {
NODE_ENV: 'production',
}
}]
};
PM2 அம்சங்கள்:
PM2 லோட் பாலன்சிங், மானிட்டரிங் மற்றும் லாக் மேனேஜ்மென்ட் போன்ற பல அம்சங்களை வழங்குகிறது.
சூழல் மாறிகள்
சூழல் மாறிகள் என்பது வெவ்வேறு சூழல்களில் உங்கள் பயன்பாட்டின் நடத்தையை உள்ளமைக்கும் விசை-மதிப்பு ஜோடிகளாகும்.
சூழல் மாறிகளை அணுகுதல்
// Get a specific environment variable
const apiKey = process.env.API_KEY;
// Set a default value if not defined
const port = process.env.PORT || 3000;
// Check if running in production
const isProduction = process.env.NODE_ENV === 'production';
// List all environment variables
console.log('Environment variables:', process.env);
.env கோப்பில் இருந்து சூழல் மாறிகளை ஏற்றுதல்
# Install dotenv package
npm install dotenv
// Load environment variables from .env file
require('dotenv').config();
// Now you can access variables from .env
console.log('Database URL:', process.env.DATABASE_URL);
சூழல் மாறிகளுக்கான சிறந்த நடைமுறைகள்:
- எப்போதும் முக்கியமான தரவை வெர்ஷன் கண்ட்ரோலுக்கு கமிட் செய்ய வேண்டாம்
- உள்ளூர் வளர்ச்சிக்கு .env ஐப் பயன்படுத்தவும்
- உங்கள் ஹோஸ்டிங் தளத்தின் மூலம் production இல் சூழல் மாறிகளை அமைக்கவும்
- உங்கள் README இல் தேவையான அனைத்து சூழல் மாறிகளையும் ஆவணப்படுத்தவும்
குழந்தை Processes
Node.js குழந்தை_செயல்முறை தொகுதியைப் பயன்படுத்தி கணினி கட்டளைகள் மற்றும் பிற ஸ்கிரிப்ட்களை இயக்க முடியும்.
1. ஒரு எளிய கட்டளையை இயக்கவும்
const { exec } = require('child_process');
exec('ls -la', (error, stdout, stderr) => {
if (error) {
console.error(`Error: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.log(`Output: ${stdout}`);
});
2. பெரிய வெளியீட்டிற்கு spawn ஐப் பயன்படுத்துதல்
const { spawn } = require('child_process');
// Better for large data output
const child = spawn('find', ['/', '-type', 'f']);
child.stdout.on('data', (data) => {
console.log(`Found file: ${data}`);
});
child.stderr.on('data', (data) => {
console.error(`Error: ${data}`);
});
child.on('close', (code) => {
console.log(`Child process exited with code ${code}`);
});
Process கண்காணித்தல் மற்றும் செயல்திறன்
1. நினைவக பயன்பாடு
// Get memory usage in MB
function getMemoryUsage() {
const used = process.memoryUsage();
return {
rss: `${Math.round(used.rss / 1024 / 1024 * 100) / 100} MB`,
heapTotal: `${Math.round(used.heapTotal / 1024 / 1024 * 100) / 100} MB`,
heapUsed: `${Math.round(used.heapUsed / 1024 / 1024 * 100) / 100} MB`,
external: `${Math.round(used.external / 1024 / 1024 * 100) / 100} MB`
};
}
// Monitor memory usage every 5 seconds
setInterval(() => {
console.log('Memory usage:', getMemoryUsage());
}, 5000);
2. CPU பயன்பாடு
const startUsage = process.cpuUsage();
// Do some CPU-intensive work
for (let i = 0; i < 1000000000; i++) {}
const endUsage = process.cpuUsage(startUsage);
console.log('CPU usage (user):', endUsage.user / 1000, 'ms');
console.log('CPU usage (system):', endUsage.system / 1000, 'ms');
முக்கிய கருத்துக்கள்
Process பொருள்
கணினி மற்றும் process தகவலை அணுகவும்
Process கட்டுப்பாடு
பயன்பாட்டைத் தொடங்கவும், நிறுத்தவும் மற்றும் நிர்வகிக்கவும்
சூழல் மாறிகள்
வெவ்வேறு சூழல்களில் பயன்பாட்டு நடத்தையை உள்ளமைக்கவும்
குழந்தை Processes
கணினி கட்டளைகள் மற்றும் பிற ஸ்கிரிப்ட்களை இயக்கவும்
பிழை கையாளுதல்
பிடிபடாத விதிவிலக்குகள் மற்றும் நிராகரிப்புகளைக் கையாளவும்
சிக்னல்கள்
SIGINT மற்றும் SIGTERM போன்ற கணினி சிக்னல்களுக்கு பதிலளிக்கவும்
PM2
Production process மேலாண்மைக்கு அத்தியாவசியம்
செயல்திறன் கண்காணித்தல்
நினைவகம் மற்றும் CPU பயன்பாட்டைக் கண்காணிக்கவும்
Production சூழல்களில் குறிப்பாக நம்பகமான மற்றும் பராமரிக்கக்கூடிய Node.js பயன்பாடுகளை உருவாக்குவதற்கு திறமையான process மேலாண்மை முக்கியமானது.